package com.my.study.algorithm.leetcode;

/**
 * 青蛙跳台阶问题：
 *   1、青蛙可以选择一次跳一个台阶，也可以选择一次跳两个台阶
 *   3、比如3个台阶，有3次跳法
 * 
 * 
 * @author Carlos
 * @version 1.0.0
 * @date 2023/2/19 17:07
 */
public class FrogStep {

    public static void main(String[] args) {
        int jumpStep = jumpStep1(10);
        System.out.println(jumpStep);
    }
    
    
    private static int jumpStep(int n) {
        if (n == 1) {
            return 1;
        }
        if (n == 2) {
            return 2;
        }
        
        return jumpStep(n - 1) + jumpStep(n-2);
    }
    
    private static int jumpStep1(int n) {
        if (n <= 2) {
            return n;
        }
        
        int f1 = 1, f2 = 2;
        int newF;
        int index = 3;
        while (index++ <= n) {
            newF = f1 + f2;
            f1 = f2;
            f2 = newF;
        }
        return f2;
    }
    
}
